8cc67c3be2f1425f53d90a1faa61bed21d25316a,ui/src/org/pentaho/di/ui/trans/steps/fileinput/text/TextFileInputDialog.java,TextFileInputDialog,getCSV,#,2580

Before Change


      int clearFields = meta.content.header ? SWT.YES : SWT.NO;
      int nrInputFields = meta.inputFiles.inputFields.length;

      if ( meta.content.header && nrInputFields > 0 ) {
        MessageBox mb = new MessageBox( shell, SWT.YES | SWT.NO | SWT.CANCEL | SWT.ICON_QUESTION );
        mb.setMessage( BaseMessages.getString( PKG, "TextFileInputDialog.ClearFieldList.DialogMessage" ) );
        mb.setText( BaseMessages.getString( PKG, "TextFileInputDialog.ClearFieldList.DialogTitle" ) );
        clearFields = mb.open();
        if ( clearFields == SWT.CANCEL ) {
          return;
        }
      }

      try {
        wFields.table.removeAll();

        FileObject fileObject = textFileList.getFile( 0 );
        fileInputStream = KettleVFS.getInputStream( fileObject );
        Table table = wFields.table;

        CompressionProvider provider =
            CompressionProviderFactory.getInstance().createCompressionProviderInstance( meta.content.fileCompression );
        inputStream = provider.createInputStream( fileInputStream );

        InputStreamReader reader;
        if ( meta.getEncoding() != null && meta.getEncoding().length() > 0 ) {
          reader = new InputStreamReader( inputStream, meta.getEncoding() );
        } else {
          reader = new InputStreamReader( inputStream );
        }

        EncodingType encodingType = EncodingType.guessEncodingType( reader.getEncoding() );

        if ( clearFields == SWT.YES || !meta.content.header || nrInputFields > 0 ) {
          // Scan the header-line, determine fields...
          String line;

          if ( meta.content.header || meta.inputFiles.inputFields.length == 0 ) {
            line = TextFileInputUtils.getLine( log, reader, encodingType, fileFormatType, lineStringBuilder );
            if ( line != null ) {
              // Estimate the number of input fields...
              // Chop up the line using the delimiter
              String[] fields =
                  TextFileInputUtils.guessStringsFromLine( transMeta, log, line, meta, delimiter, enclosure,
                      escapeCharacter );

              for ( int i = 0; i < fields.length; i++ ) {
                String field = fields[i];
                if ( field == null || field.length() == 0 || ( nrInputFields == 0 && !meta.content.header ) ) {
                  field = "Field" + ( i + 1 );
                } else {
                  // Trim the field
                  field = Const.trim( field );
                  // Replace all spaces & - with underscore _
                  field = Const.replace( field, " ", "_" );
                  field = Const.replace( field, "-", "_" );
                }

                TableItem item = new TableItem( table, SWT.NONE );
                item.setText( 1, field );
                item.setText( 2, "String" ); // The default type is String...
              }

              wFields.setRowNums();
              wFields.optWidth( true );

              // Copy it...
              getInfo( meta );
            }
          }

After Change


      int clearFields = meta.content.header ? SWT.YES : SWT.NO;
      int nrInputFields = meta.inputFiles.inputFields.length;

      if ( nrInputFields > 0 ) {
        MessageBox mb = new MessageBox( shell, SWT.YES | SWT.NO | SWT.CANCEL | SWT.ICON_QUESTION );
        mb.setMessage( BaseMessages.getString( PKG, "TextFileInputDialog.ClearFieldList.DialogMessage" ) );
        mb.setText( BaseMessages.getString( PKG, "TextFileInputDialog.ClearFieldList.DialogTitle" ) );
        clearFields = mb.open();
        if ( clearFields == SWT.CANCEL ) {
          return;
        }
      }

      try {
        wFields.table.removeAll();

        FileObject fileObject = textFileList.getFile( 0 );
        fileInputStream = KettleVFS.getInputStream( fileObject );
        Table table = wFields.table;

        CompressionProvider provider =
            CompressionProviderFactory.getInstance().createCompressionProviderInstance( meta.content.fileCompression );
        inputStream = provider.createInputStream( fileInputStream );

        InputStreamReader reader;
        if ( meta.getEncoding() != null && meta.getEncoding().length() > 0 ) {
          reader = new InputStreamReader( inputStream, meta.getEncoding() );
        } else {
          reader = new InputStreamReader( inputStream );
        }

        EncodingType encodingType = EncodingType.guessEncodingType( reader.getEncoding() );

          // Scan the header-line, determine fields...
          String line = TextFileInputUtils.getLine( log, reader, encodingType, fileFormatType, lineStringBuilder );
            if ( line != null ) {
              // Estimate the number of input fields...
              // Chop up the line using the delimiter
              String[] fields =
                  TextFileInputUtils.guessStringsFromLine( transMeta, log, line, meta, delimiter, enclosure,
                      escapeCharacter );

              for ( int i = 0; i < fields.length; i++ ) {
                String field = fields[i];
                if ( field == null || field.length() == 0 || !meta.content.header ) {
                  field = "Field" + ( i + 1 );
                } else {
                  // Trim the field
                  field = Const.trim( field );
                  // Replace all spaces & - with underscore _
                  field = Const.replace( field, " ", "_" );
                  field = Const.replace( field, "-", "_" );
                }

                TableItem item = new TableItem( table, SWT.NONE );
                item.setText( 1, field );
                item.setText( 2, "String" ); // The default type is String...
              }

              wFields.setRowNums();
              wFields.optWidth( true );

              // Copy it...
              getInfo( meta );

          // Sample a few lines to determine the correct type of the fields...
          String shellText = BaseMessages.getString( PKG, "TextFileInputDialog.LinesToSample.DialogTitle" );